package com.company;

import org.junit.jupiter.api.Test;

import static org.junit.Assert.assertEquals;
public class NGuessNumberTest {
    class generateAnswerTest {
        @Test
        public void generateAnswer() {

            int s = 4;

            NGuessNumber nGuessNumber = new NGuessNumber();

            assertEquals(s, nGuessNumber.generateAnswer().length);


            //System.out.println(Arrays.toString(nGuessNumber.generateAnswer()));

            int num[] = nGuessNumber.generateAnswer();

            boolean flag = false;
            int numsize = 0;

            for (int i = 0; i < s; i++) {
                if (num[i] >= 0 && num[i] <= 9) {
                    numsize = 1;
                } else {
                    numsize = 0;
                }
                for (int l = 0; l <= i; l++) {
                    if (i != l) {
                        if (num[i] == num[l]) {
                            flag = false;
                        } else {
                            flag = true;
                        }
                    }
                }
            }

            assertEquals(true, flag);
            System.out.println("yes");
            assertEquals(1, numsize);
        }
        class getPlayerInputTest{
            @Test
            void getPlayerInput() {
                int numsize = 4;

                NGuessNumber nGuessNumber = new NGuessNumber();

                assertEquals(numsize,nGuessNumber.guesslist.length);

                System.out.println("用户输入的数字数量为4，正确");
            }
        }
        class compareGuessAnswer{
            @Test
            void compareGuessAnswer() {
                NGuessNumber nGuessNumber = new NGuessNumber();

                int testguess []= nGuessNumber.guesslist;
                int testnum []= nGuessNumber.generateAnswer();
                //System.out.println(Arrays.toString(testguess));
                int a_num = 0;
                int b_num = 0;
                for (int i = 0; i < testnum.length; i++) {
                    for (int l=0; l < testnum.length; l++){
                        if(i!=l){
                            if(testnum[i]==testguess[l]){
                                b_num++;
                            }
                        }else{
                            if(testnum[i]==testguess[l]){
                                a_num++;
                            }
                        }

                    }
                }
                String s = a_num+"A"+b_num+"B\n"+"A表示存在且位置正确的数字个数，B表示存在且位置不正确的数字个数！\n"+"如：1A2B,表示你猜测的四个数字有3个是对的，有一个位置对，两个位置不对。";

                assertEquals(s,nGuessNumber.compareGuessAnswer());

                System.out.println();
                System.out.println("测试比较玩家猜测和答案后，返回的提示信息，正确");
            }
        }
        class isWin{
            @Test
            void isWin() {
                NGuessNumber nGuessNumber = new NGuessNumber();

                if(nGuessNumber.isWin()==true){
                    assertEquals(true,nGuessNumber.isWin());
                    System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
                }else if(nGuessNumber.isWin()==false){
                    assertEquals(false,nGuessNumber.isWin());
                    System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
                }else{
                    assertEquals(true,nGuessNumber.isWin());
                    assertEquals(false,nGuessNumber.isWin());
                    System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型错误");

                }
            }

        }
    }
}
